package com.itheima.reggie.common;

import com.itheima.reggie.domain.Employee;

public class EmployeeHolder {

     /*
    * 线程局部变量，该变量对其他线程而言是隔离的；在进行对象跨层传递的时候，使用ThreadLocal可以避免多次传递，打破层次间的约束。
    ThreadLocal的三个方法:
    - set(T value) ：设置当前线程绑定的变量
    - get()：获取当前线程绑定的变量
    - remove() ：移除当前线程绑定的变量
    *
    * ThreadLocal 用户信息共享
    *
    */

    //  ThreadLocal 使用这个类

    private static final ThreadLocal<Employee> TL = new ThreadLocal<>();

    // 存
    public static void set(Employee employee) {

        TL.set(employee);
    }

    // 取
    public static Employee get() {

        return TL.get();
    }

    // 删
    public static void remove() {

        TL.remove();
    }
}